package org.example.day02;

import java.util.Scanner;

/**
 * @author zlxad
 * @version 1.0
 * @description: TODO +
 * <p>  某部门计划通过结队编程来进行项目开发，已知该部门有<span>N</span>名员工，每个员工有独一无二的职级，每三个员工形成一个小组进行结队编程，结队分组规则如下：<span></span>  </p> <p>  <span></span>  </p> <p>  从部门中选出序号分别为<span> i</span>、<span>j</span>、<span>k </span>的<span> 3 </span>名员工，他们的职级分别为<span> level[i]</span>、<span>level [j]</span>、<span>level [k]</span>  </p> <p>  结队小组需满足：<span> level [i] &lt; level [j] &lt; level [k] </span>或者<span> level [i] &gt; level [j] &gt; level [k] </span>，<strong>其中  0 &lt;= i &lt; j &lt; k &lt; n</strong>  </p> <p>  请你按上述条件计算可能组合的小组数量。同一员工可以参加多个小组。 </p>
 *
 * 某部门计划通过结队编程来进行项目开发，已知该部门有N名员工，每个员工有独一无二的职级，每三个员工形成一个小组进行结队编程，结队分组规则如下：
 * 从部门中选出序号分别为 i、j、k 的 3 名员工，他们的职级分别为 level[i]、level [j]、level [k]
 * 结队小组需满足： level [i] < level [j] < level [k] 或者 level [i] > level [j] > level [k] ，其中  0 <= i < j < k < n
 * 请你按上述条件计算可能组合的小组数量。同一员工可以参加多个小组。
 * @date 2024/3/11 15:22
 */
public class
test023 {

    public static int countTeams(int n, int[] levels) {
        // 初始化小组数量为0
        int count = 0;

        // 遍历每个可能成为中间职级的员工
        for (int j = 0; j < n; j++) {
            int lessLeft = 0;
            int greaterLeft = 0;

            // 对于中间员工j，遍历其左侧所有员工
            for (int i = 0; i < j; i++) {
                if (levels[i] < levels[j]) {
                    lessLeft++;
                } else if (levels[i] > levels[j]) {
                    greaterLeft++;
                }
            }

            int lessRight = 0;
            int greaterRight = 0;

            // 对于中间员工j，遍历其右侧所有员工
            for (int k = j + 1; k < n; k++) {
                if (levels[k] < levels[j]) {
                    lessRight++;
                } else if (levels[k] > levels[j]) {
                    greaterRight++;
                }
            }

            // 计算以j为中间职级的小组数量，并累加到总数中
            count += lessLeft * greaterRight + greaterLeft * lessRight;
        }

        return count;
    }

    public static void main(String[] args) {
        // 输入处理
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();  // 输入员工总数
        int[] levels = new int[n];  // 输入员工的职级，将其转换成整数数组
        for (int i = 0; i < n; i++) {
            levels[i] = scanner.nextInt();
        }

        // 调用函数并输出结果
        System.out.println(countTeams(n, levels));
    }
}

